#ifndef LEXICO_H_
#define LEXICO_H_
#include <string>
#include <iostream>
#include"Arquivo.h"
#include"Hash.h"
#include"ListaIdentificadores.h"

using namespace std;

struct TipoErro
{
	int mTipo;
	int mLinha;
};

class Lexico
{
public:
	Lexico(Hash &);
	void GetLinha(Arquivo &);
	void Valida(); //esse � o problema
	virtual ~Lexico();
	bool EhLetra(char );//poderia passar posi��o
	bool Operadores(int&); //posi��o no buffer
	void mostra(); //so para testar a inser��o
	bool Numero(char);
	bool EhNumero(int&);
	bool CaracterValido(char);
	void InsereErro( int );
	bool RetFlag(){ return mFlag;};
	void MostraErro(Arquivo &);
	void RetLista(ListaIdentificadores &);
private:
	string mBuffer;
	int mLinha;
	ListaIdentificadores mLista;
	bool mFlag;
	bool mErro;
	vector<TipoErro> mListaErros;
	Hash *mHash;
};

#endif /*LEXICO_H_*/
